/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Gramatica;

import java.util.ArrayList;

/**
 *
 * @author David Fernandez <david@gluem.org>
 */
public class Produccion {

    private SimboloNoTerminal parteIzquierda;
    private ArrayList<ArrayList<ISimbolo>> parteDerecha;

    public Produccion (SimboloNoTerminal pI, ArrayList<ArrayList<ISimbolo>> pDer ){

        parteIzquierda = pI;
        //System.out.println(pDer);
        parteDerecha = new ArrayList<ArrayList<ISimbolo>>(pDer);
        //System.out.println(parteDerecha);
    }

    @Override
    public String toString() {

        String salida = getParteIzquierda() + " ---> ";
        for (int i = 0; i < getParteDerecha().size(); i++) {

            //for (int j = 0; j < getParteDerecha().get(i).size(); j++) {

                
                //salida += getParteDerecha().get(i).get(j) + (j < getParteDerecha().get(i).size() - 1 ? "|" : "");
                salida+=getParteDerecha().get(i).toString();
            //}

        }

        return salida;
    }

    /**
     * @return the parteIzquierda
     */
    public SimboloNoTerminal getParteIzquierda() {
        return parteIzquierda;
    }

    /**
     * @param parteIzquierda the parteIzquierda to set
     */
    public void setParteIzquierda(SimboloNoTerminal parteIzquierda) {
        this.parteIzquierda = parteIzquierda;
    }

    /**
     * @return the parteDerecha
     */
    public ArrayList<ArrayList<ISimbolo>> getParteDerecha() {
        return parteDerecha;
    }

    /**
     * @param parteDerecha the parteDerecha to set
     */
    public void setParteDerecha(ArrayList<ArrayList<ISimbolo>> parteDerecha) {
        this.parteDerecha = parteDerecha;
    }

    public static void main (String [] args){

        ArrayList<Integer> l = new ArrayList<Integer>();

        l.add(0);
        l.add(1);
        l.add(2);
        l.add(3);

        ArrayList<Integer> l2 = new ArrayList<Integer>();

        l2.add(789);

        System.out.println(l.retainAll(l2) + " &&&& " + l.isEmpty());


        
    }
}
